Define some helper scopes in Delayed::Job for worker status API.

Akinori MUSHA 10 years ago
parent
commit
89cc666212
2 changed files with 9 additions and 3 deletions
  1. 3 3
      app/controllers/worker_status_controller.rb
  2. 6 0
      config/initializers/delayed_job.rb

+ 3 - 3
app/controllers/worker_status_controller.rb

@@ -20,9 +20,9 @@ class WorkerStatusController < ApplicationController
20 20
     end
21 21
 
22 22
     render json: {
23
-      pending: Delayed::Job.where("run_at <= ? AND locked_at IS NULL AND attempts = 0", start).count,
24
-      awaiting_retry: Delayed::Job.where("failed_at IS NULL AND attempts > 0").count,
25
-      recent_failures: Delayed::Job.where("failed_at IS NOT NULL AND failed_at > ?", 5.days.ago).count,
23
+      pending: Delayed::Job.pending.where("run_at <= ?", start).count,
24
+      awaiting_retry: Delayed::Job.awaiting_retry.count,
25
+      recent_failures: Delayed::Job.failed.where('failed_at > ?', 5.days.ago).count,
26 26
       event_count: count,
27 27
       max_id: max_id || 0,
28 28
       events_url: events_url,

+ 6 - 0
config/initializers/delayed_job.rb

@@ -7,3 +7,9 @@ Delayed::Worker.delay_jobs = !Rails.env.test?
7 7
 
8 8
 # Delayed::Worker.logger = Logger.new(Rails.root.join('log', 'delayed_job.log'))
9 9
 # Delayed::Worker.logger.level = Logger::DEBUG
10
+
11
+class Delayed::Job
12
+  scope :pending, ->{ where("locked_at IS NULL AND attempts = 0") }
13
+  scope :awaiting_retry, ->{ where("failed_at IS NULL AND attempts > 0") }
14
+  scope :failed, -> { where("failed_at IS NOT NULL") }
15
+end